package ar.edu.unq.tpi.constriu.c1.tejeda.Dominio.Agenda;

import java.util.Date;

import org.uqbar.commons.model.UserException;

/**
 * @author lola
 *
 */
public class Event{

	private Date startDate;
	private Date endDate;
	private String description;
	private Boolean isImportant;

	
	
	
	
	public Event() {
		super();
	}

	public Event(Date fechaInicio, Date fechaFin, String descripcion,
			Boolean esImportante) {
		super();
		startDate = fechaInicio;
		endDate = fechaFin;
		this.description = descripcion;
		this.isImportant = esImportante;
		dateValidator(endDate, startDate);
	}

	public Event(Date fechaInicio, Date fechaFin, String descripcion) {
		super();
		startDate = fechaInicio;
		endDate = fechaFin;
		this.description = descripcion;
		this.isImportant = false;
		dateValidator(endDate, startDate);
	}

	@SuppressWarnings("deprecation")
	public Event(Date fechaInicio, String descripcion, boolean esImportante) {
		// el sistema asume que es una hora posterior a la fecha inicio
		super();
		startDate = fechaInicio;
		endDate = (Date) startDate.clone();
		endDate.setHours(startDate.getHours()+1);
		this.description = descripcion;
		this.isImportant = esImportante;
		dateValidator(endDate, startDate);
	}
	
	
	
	private void dateValidator (Date date1, Date date2){
		if (date1.before(date2)){
			throw new UserException("Fecha de fin no puede ser antes de fecha de inicio");
		}
	}

	public Date getFechaInicio() {
		return startDate;
	}

	public void setFechaInicio(Date fechaInicio) {
		startDate = fechaInicio;
	}

	public Date getFechaFin() {
		return endDate;
	}

	public void setFechaFin(Date fechaFin) {
		endDate = fechaFin;
	}

	public String getDescripcion() {
		return description;
	}

	public void setDescripcion(String descripcion) {
		this.description = descripcion;
	}

	public Boolean getEsImportante() {
		return isImportant;
	}

	public void setEsImportante(Boolean esImportante) {
		this.isImportant = esImportante;
	}
	
	@SuppressWarnings("deprecation")
	public int calcularHoras(){
		//asumiendo que empieza y termina en el mismo día	
		return (this.endDate.getHours() - this.startDate.getHours());
	}
	
	
	public static void main (String args[]){
		Integer a = new Integer(3);
		Integer b = new Integer(3);
		
		System.out.println(a==b);
	}
	
	
	// *************************************
	// ** Validaciones
	// *************************************

	public void validateCreate() {
		if (this.getFechaFin().before(this.getFechaInicio())) {
			throw new UserException("Fecha de fin debe ser después de fecha de inicio");
		}
		if (this.getEsImportante()==null){
			this.setEsImportante(false);
		}
		if (this.getFechaFin()==null){
			Date f = (Date) this.getFechaInicio().clone();
			f.setHours(f.getHours()+1);
			this.setFechaFin(f);
			
		}
	}
	
	

}
